/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.rcnss.ui.form.command;

import com.rcnss.data.TypeUser;
import com.rcnss.data.User;
import com.rcnss.ui.application.main.MainApp;
import com.rcnss.ui.application.main.layout.MainLayout;
import com.rcnss.ui.menu.AdminMenu;
import com.rcnss.ui.menu.UserMenu;
import com.vaadin.ui.LoginForm;
import com.vaadin.ui.LoginForm.LoginEvent;
import com.vaadin.ui.Window;
import java.text.DateFormat;
import java.util.Date;

/**
 *
 * @author Guesmi
 */
public class CommandLogin implements LoginForm.LoginListener {

    private Window MainWindow = null;

    public Window getMainWindow() {
        return MainWindow;
    }

    public void setMainWindow(Window MainWindow) {
        this.MainWindow = MainWindow;
    }

    public CommandLogin(Window MainWindow)
    {
        setMainWindow(MainWindow);
    }

    public void onLogin(LoginEvent event) {
        MainApp.UserSessionData.ConnectedUserLogin = event.getLoginParameter("username");
        MainApp.UserSessionData.ConnectedUserTime = new Date();

        User user = null;
        try {
            user = User.SearchByLogin(MainApp.UserSessionData.ConnectedUserLogin);
        } catch (Exception ex) {
            MainWindow.showNotification("Erreur Base de Donnees", "L'application ne peut pas acceder a la base de donnees",
                        Window.Notification.TYPE_ERROR_MESSAGE);
            return;
        }
        if(user != null) {
            if(!user.getPWD().equals(event.getLoginParameter("password")))
            {
                 MainWindow.showNotification("Mot de passe Incorrect", 
                         "<p>Verifiez le mot de passe, sinon envoyez une nouvelle demande insciption</p>",
                        Window.Notification.TYPE_ERROR_MESSAGE);
                 return;
            }
            //MainApp.UserSessionData.Mat = user.getMatricule();
            MainWindow.getContent().removeAllComponents();
            MainLayout page = new MainLayout();
            if(user.getTypeUser() == 0)
                page.setMenu(new AdminMenu());
            else
                page.setMenu(new UserMenu());
            MainWindow.getContent().addComponent(page);
            MainWindow.requestRepaintAll();
            MainApp.UserSessionData.ConnectedUserID = user.getID();
            MainWindow.showNotification("Conection "+
                user.getNOM()+" "+user.getPrenom(),
                Window.Notification.TYPE_TRAY_NOTIFICATION);
       } else
       {
            MainWindow.showNotification("Nom d'utilisateur Incorrect", "<p>Verifiez votre nom d'utilisateur, sinon envoyez une nouvelle demande insciption</p>",
                        Window.Notification.TYPE_ERROR_MESSAGE);
       }
    }
}
